Enterprise software systems may comprise many independent computer programs, applications, modules, or components. These applications may execute in a distributed manner on several different computers. Applications often require the services provided by other applications. A first application requesting a service from a second application may be said to act in a client role while the second application may be said to act in a server role. The first application may provide services to yet other applications and may in that case act in a server role. The intercommunicating applications may be executing on computers located far apart and in different divisions of the company.
The links between applications and/or computers may be provided by different interfaces using different technologies. Different interfaces may be associated with different advantages and drawbacks relative to data throughput speeds, ease of access to information, privacy and security of enterprise data, and commonality among different applications. Applications may access datastores and/or databases through one or more interfaces. In some cases, an application may rely upon a dedicated datastore reserved solely for the use of the application, while in other cases applications may rely upon a shared datastore shared by several applications.